package com.iakuil.app.common.core;

import com.baomidou.mybatisplus.annotation.IEnum;
import com.fasterxml.jackson.annotation.JsonValue;

import java.io.Serializable;

/**
 * 字典枚举
 *
 * <p>所谓字典枚举，是对通用枚举{@link IEnum}的进一步扩展，是<strong>【数据字典】</strong>最简实现版本。
 *
 * @author Kai
 */
public interface DictEnum<T extends Serializable> extends IEnum<T> {

    /**
     * 字典名称
     *
     * <p>一般是中文，比如：男
     *
     * @return 字典名称
     */
    String getLabel();

    /**
     * 字典值
     *
     * <p>一般是数字，比如：0
     *
     * @return 字典值
     */
    @JsonValue
    T getValue();

    /**
     * 字典描述
     *
     * @return 字典描述文本
     */
    default String getDescription() {
        return getLabel();
    }
}
